Passed
Push — master ( 67261f...67f253 )
by Miloš
02:58
created

AuthStorageProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 30
dl 0
loc 37
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A getProvider 0 3 1
A getProviderById 0 19 3
1
import { Injectable } from "@angular/core";
2
import { UniFirebaseLoginConfig } from "../config/uni-firebase-login-config";
3
import { UniFirebaseLoginConfigProvider } from "../config/uni-firebase-login-config-provider";
4
import { UserModel } from "../model/user-model";
5
import { FirestoreStorage } from "./firestore-storage";
6
import { IStorageProvider } from "./i-storage-provider";
7
import { NoMemoryStorage } from "./no-memory-storage.service";
8
9
@Injectable({
10
    providedIn: "root",
11
})
12
export class AuthStorageProvider<User extends UserModel = UserModel> {
13
    protected config: UniFirebaseLoginConfig;
14
15
    public constructor(
16
        protected firestoreStorage: FirestoreStorage<User>,
17
        protected inMemoryStorage: NoMemoryStorage<User>,
18
        configProvider: UniFirebaseLoginConfigProvider,
19
    ) {
20
        this.config = configProvider.config;
21
    }
22
23
    public getProvider(): IStorageProvider<User> {
24
        return this.getProviderById(this.config.storage);
25
    }
26
27
    protected getProviderById(
28
        providerId: false | "firestore",
29
    ): IStorageProvider<User> {
30
        let provider;
31
        switch (providerId) {
32
            case "firestore":
33
                provider = this.firestoreStorage;
34
                break;
35
            case false:
36
                provider = this.inMemoryStorage;
37
                break;
38
        }
39
40
        if (provider !== undefined) {
41
            return provider;
42
        }
43
44
        throw new Error(`Provider ${providerId} not supported.`);
45
    }
46
}
47